package com.lee.poi.demo.service;



import java.util.ArrayList;
import java.util.List;

public enum RegxRuleTenPointOne {

    A("项目名称1","项目名称：([\\s\\S]*?)委托方"),
    AA("项目名称2","委托乙方进行([\\s\\S]*?)计算机软件"),
    AAA("项目名称3","项目名称: ([\\s\\S]*?)。"),
    B("甲方名称1","委托方（甲方）：([\\s\\S]*?)受托方[\\s\\S]*?签订"),
    BB("甲方名称2","委托方（甲方）：([\\s\\S]*?)受托方[\\s\\S]*?鉴于"),
    C("乙方名称1","受托方（乙方）： ([\\s\\S]*?)签订日期："),
    CC("乙方名称2","受托方（乙方）：[\\s\\S]*?受托方（乙方）：([\\s\\S]*?)鉴于甲方拟委托乙方进行"),
    D("含税金额大写","为人民币（大写）([\\s\\S]*?)（"),
    E("含税金额小写","本合同价格为人民币（大写）[\\s\\S]*?&yen;([\\s\\S]*?)）"),
    F("不含税金额大写","不含税价人民币（大写）([\\s\\S]*?)\\("),
    I("不含税金额小写","不含税价人民币（大写）[\\s\\S]*?&yen;([\\s\\S]*?)\\)"),
    J("增值税税率","增值税税率([\\s\\S]*?)%"),
    K("增值税税额","增值税税额([\\s\\S]*?)元。"),
    L("付款比例信息","3.2 支付方式：([\\s\\S]*?)4.  双方的权利和义务"),  // 特殊处理
//    签署页
    M("签署页甲方法定代表人","授权代表（签字）：([\\s\\S]*?)法定代表人（负责人）或"),
    NA("签署页乙方法定代表人","授权代表（签字）：[\\s\\S]*?法定代表人（负责人）或[\\s\\S]*?授权代表（签字）：([\\s\\S]*?)签订日期："),

    O("签署页甲方签订日期","签 署 页[\\s\\S]*?签订日期：([\\s\\S]*?)签订日期："),
    OA("签署页乙方签订日期","签 署 页[\\s\\S]*?签订日期：[\\s\\S]*?签订日期：([\\s\\S]*?)地址："),

    P("签署页甲方开户银行","开户银行：([\\s\\S]*?)开户银行："),
    PA("签署页乙方开户银行","开户银行：[\\s\\S]*?开户银行：([\\s\\S]*?)账号："),


    Q("签署页甲方账户","账号：([\\s\\S]*?)账号"),
    QA("签署页乙方账户","账号：[\\s\\S]*?账号：([\\s\\S]*?)纳税人识别号|账号：[\\s\\S]*?账号：([\\s\\S]*?)统一社会信用代码"),

    R("签署页甲方统一社会信用代码","纳税人识别号：([\\s\\S]*?)统一社会信用代码|统一社会信用代码：([\\s\\S]*?)统一社会信用代码"),
    RA("签署页乙方统一社会信用代码","纳税人识别号：[\\s\\S]*?统一社会信用代码：([\\s\\S]*?)开户|统一社会信用代码：[\\s\\S]*?统一社会信用代码：([\\s\\S]*?)开户"),

    S("签署页甲方盖章","甲方：[\\s\\S]*?（盖章）([\\s\\S]*?)乙方"),
    SA("签署页乙方盖章","乙方：[\\s\\S]*?（盖章）([\\s\\S]*?)法定代表人（负责人）"),


    T("争议解决方式","争议解决[\\s\\S]*?（2）诉讼：向([\\s\\S]*?)所在地人民法院提起诉讼。"),
    U("仲裁机构","争议解决[\\s\\S]*?仲裁：提交([\\s\\S]*?)仲裁委员会"),
    V("诉讼地方","争议解决[\\s\\S]*?（2）诉讼：向([\\s\\S]*?)所在地人民法院提起诉讼。"),
    W("合同份数","本合同一式([\\s\\S]*?)份[\\s\\S]*?附件"),
    X("甲方合同份数","甲方执([\\s\\S]*?)份[\\s\\S]*?附件"),
    XX("乙方合同份数","乙方执([\\s\\S]*?)份[\\s\\S]*?附件"),
    Y("特别约定","特别约定[\\s\\S]*?以特别约定为准。([\\s\\S]*?)（以下无正文）"),
    Z("日期","服务期限为从([\\s\\S]*?)日。"), // 所有的年月日

    //空位抽取 做非空审核
    AAAA("签订地点","签订地点: ([\\s\\S]*?)目"),
    BBBB("项目完成后的维护时间","合同终止后的([\\s\\S]*?)年内"),
    CCCC("试运行期","则项目进入([\\s\\S]*?)个月的试运行期"),
    DD("质保期","质保期为[\\s\\S]*?之日起计算([\\s\\S]*?)个月"),
    EE("一般性故障解决期限","接到甲方通知后的([\\s\\S]*?) 小时内"),
    FF("重大故障解决期限","重大故障[\\s\\S]*?并在([\\s\\S]*?)小时内"),
    GG("联系人变更通知期限","联系人变更[\\s\\S]*?应提前([\\s\\S]*?)日通知甲方"),
    HH("开发进度延迟时长","每迟延([\\s\\S]*?)日"),
    II("开发进度延迟赔付违约金的比例","每迟延[\\s\\S]*?合同价款([\\s\\S]*?)%的违约金"),
    JJ("乙方原因试运行违约金比例","若由于乙方原因[\\s\\S]*?合同价款([\\s\\S]*?)%的违约金"),
    KK("项目未通过验收违约金比例","项目未能通过验收[\\s\\S]*?相当于合同价款([\\s\\S]*?)%的违约金"),
    LL("乙方排除缺陷延迟违约金","约定时间内到达现场[\\s\\S]*?支付违约金([\\s\\S]*?)元"),
    MM("乙方违约违约金","另有约定外[\\s\\S]*?合同价款的([\\s\\S]*?)向甲方"),
    NN("乙方违约解除合同","承担合同总额([\\s\\S]*?)的违约金"),
    OO("整改通知书","整改通知书[\\s\\S]*?支付违约金([\\s\\S]*?)元"),


    QQ("甲乙方地址","<td[\\s\\S]*?地址：([\\s\\S]*?)</td>"),
    RR("甲乙方联系人","<td[\\s\\S]*?联系人：([\\s\\S]*?)</td>"),
    SS("甲乙方电话","<td[\\s\\S]*?电话：([\\s\\S]*?)</td>"), //四个电话
    TT("甲乙方传真","<td[\\s\\S]*?传真：([\\s\\S]*?)</td>"),
    UU("甲乙方Email","<td[\\s\\S]*?Email：([\\s\\S]*?)</td>"),
    VV("甲乙方执行单位","<td[\\s\\S]*?执行单位：([\\s\\S]*?)</td>"),
    WW("甲乙方执行人","<td[\\s\\S]*?执行人：([\\s\\S]*?)</td>"),
    XXX("甲乙方物资物资调配中心受理电话","<td[\\s\\S]*?物资调配中心受理电话：([\\s\\S]*?)</td>"),
    YY("甲乙方需求单位","<td[\\s\\S]*?需求单位：([\\s\\S]*?)</td>");



    private String regxName;
    private String regx;

    private RegxRuleTenPointOne(String regxName, String regx){
        this.regxName = regxName;
        this.regx = regx;
    }

    public static String takeRegx(String regxName){
        for (RegxRuleTenPointOne regxRule : RegxRuleTenPointOne.values()){
            if (regxRule.regxName.equals(regxName)){
                return regxRule.regx;
            }
        }
        return null;
    }

//    public static List<RegexPO> listRegxValue(){
//        List<RegexPO> values = new ArrayList<>();
//        for(RegxRuleTenPointTwo regxRule : RegxRuleTenPointTwo.values()){
//            RegexPO regexPO = new RegexPO("10.2",regxRule.regxName,regxRule.regx);
//            values.add(regexPO);
//        }
//        return  values;
//    }
}
